/**
 * Copyright 2010 Jake Jackson
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.jake.nb.ext.ant.parser;

import javax.swing.text.BadLocationException;
import javax.swing.text.Document;
import org.openide.util.Exceptions;

/**
 *
 * @author JakeJ
 */
public class Span {
  private final Document document;
  private final int end;
  private final int start;

  public Span(final Document document, final int start, final int end) {
    this.document = document;
    this.start = start;
    this.end = end;
  }

  public Span(final Document document, final int[] span) {
    this(document, span[0], span[1]);
  }

  public Document getDocument() {
    return document;
  }

  public int getEnd() {
    return end;
  }

  public int getStart() {
    return start;
  }

  public int getLength() {
    return end - start;
  }

  public String getText() {
    try {
      return document.getText(start, end - start);
    } catch (BadLocationException ex) {
      Exceptions.printStackTrace(ex);
    }
    return "";
  }

  @Override
  public String toString() {
    return "Span{" + "document=" + document + ", end=" + end + ", start=" + start + '}';
  }
}
